/** @brief Clase que representa qualsevol tipus de unitat militar.*/
public class Unitat {
	
	String nom;/** @var nom amb qual s'identificara la unitat*/
	double grauEspertesa;/** @var grau d'experiencia que te la unitat */
	int quantitat;/** @var numero de efectius que te aquesta unitat.*/
	
	
	public Unitat()
	{
		grauEspertesa =0;
		quantitat = 0;
	}
	public Unitat(String inNom,double inGrauEspertesa,int inQuantitat)
	{
		nom = inNom;					grauEspertesa = inGrauEspertesa;	
		quantitat = inQuantitat;	
	}
	
	public String nom()
	{return nom;}
	
	public double grauEspertesa()
	{return grauEspertesa;}
	
	public int quantitat()
	{return quantitat;}
	
	public void modificarEspertesa()
	{
		grauEspertesa += 0.5;
	}
	
	public double potencia()
	{
		return quantitat * grauEspertesa();
	}
	
	/**
	 * @Pre: grauEspertesa avans de la batalla.
	@Post: modifica la quantitat de la forma seguent:
	rep la potencia del enemic potenciaEnemiga, utilitza la formula 
	(potencia - potenciaEnemiga)/grauEspertesa
	aquest valor es quantitat final.
	
*/
	public void modificarQuantitat(double potenciaEnemiga)
	{
		double calcul=0.0;
		calcul = (potencia() - potenciaEnemiga)/grauEspertesa;
		quantitat= (int)calcul;
	}
	
	/**
	 @pre 
	 @post: retorna sempre fals, previa implementacio en subclases*/
	public boolean esNecessariCanviFormacio()
	{
		// HAURIAM DE COMPROVAR QUE S'EXECUTES EL APROPIAT!!!
		return false;
	}
	
	/**
	 @pre: llocInici i llocDesti existeixen.
	 @post retorna cert si es posible que la unitat vagi de llocInici a  llocDesti*/
	public boolean esPosibleMoure(Enclavament llocInici,Enclavament llocFinal)
	{
		// HAURIAM DE COMPROVAR QUE S'EXECUTES EL APROPIAT!!!
		return false;
	}
	

}
